package com.jeeplus.mob.common;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.Map;

public class JsonToMap {

    private Object oJson;

    public JsonToMap(Object jStr) {
        this.oJson = jStr;
    }

    /**
     * 将获取的value值封装给对象
     * @param s value值
     * @return 对象
     */
    public JsonToMap get(Object s) {
        if (s instanceof Integer) return new JsonToMap(JSONArray.fromObject(oJson).get((int) s));
        else return new JsonToMap(jsonToMap(oJson).get(s));

    }


    @Override
    public String toString() {
        return oJson.toString();
    }


    public static void main(String[] args) {
        String jsonStr = "{\"code\":\"0\",\"data\":{\"name\":\"Jackson\",\"age\":6},\"data1\":[{\"name\":\"Lee\",\"age\":18},{\"name\":\"Jack\",\"age\":20}]}";
        JsonToMap jsonToMap = new JsonToMap(jsonStr);
        System.out.println(jsonToMap);
        System.out.println(jsonToMap.get("code"));
        System.out.println(jsonToMap.get("data"));
        System.out.println(jsonToMap.get("data").get("name"));//因为get方法返回的是JsonToMap对象，所以可以不断调用get(key)方法
        System.out.println(jsonToMap.get("data").get("age"));
        System.out.println(jsonToMap.get("data1"));
        System.out.println(jsonToMap.get("data1").get(0));
        System.out.println(jsonToMap.get("data1").get(1));
        System.out.println(jsonToMap.get("data1").get(1).get("name"));
        System.out.println(jsonToMap.get("data1").get(1).get("age"));
    }

    /**
     * json string 转换为 map 对象
     *
     * @param jsonObj
     * @return
     */
    public static Map<Object, Object> jsonToMap(Object jsonObj) {
        JSONObject jsonObject = JSONObject.fromObject(jsonObj);
        Map<Object, Object> map = (Map) jsonObject;
        return map;
    }
}
